package com.obradovicnjegovan.webprodavnica.so.impl;

import java.util.Date;

import org.apache.tapestry5.ioc.annotations.Inject;

import com.obradovicnjegovan.webprodavnica.dao.HibernateDao;
import com.obradovicnjegovan.webprodavnica.entities.Korpa;
import com.obradovicnjegovan.webprodavnica.entities.Narudzbenica;
import com.obradovicnjegovan.webprodavnica.entities.StatusNarudzbenice;
import com.obradovicnjegovan.webprodavnica.so.KreirajNovuNarudzbenicu;

public class KreirajNovuNarudzbenicuImpl implements KreirajNovuNarudzbenicu {
	@Inject
	private HibernateDao hibernateDao;
	private Korpa korpa;
	
	public Korpa getKorpa() {
		return korpa;
	}
	public void setKorpa(Korpa korpa) {
		this.korpa = korpa;
	}


	public HibernateDao getHibernateDao() {
		return hibernateDao;
	}
	public void setHibernateDao(HibernateDao hibernateDao) {
		this.hibernateDao = hibernateDao;
	}
	public Object execute() {
		try {
			Narudzbenica narudzbenica = new Narudzbenica();
			narudzbenica.setDatum(new Date());
			narudzbenica.setPozivNaBroj(izgenerisiPozivNaBroj());
			narudzbenica.setStatusNarudzbenice(StatusNarudzbenice.naCekanju);
			narudzbenica.setKorpa(getKorpa());
			narudzbenica.setKomentar("testiranje 1 2 3");
			hibernateDao.save(narudzbenica);
			return narudzbenica;
		} catch (Exception e) {
			return null;
		}
	}
	private String izgenerisiPozivNaBroj() {
		try {
			String pozivNaBroj = String.valueOf(hibernateDao.get(Narudzbenica.class).size());
			return pozivNaBroj;
		} catch (Exception e) {
			return "Greska";
		}
	}

}
